package com.karson.common.enums;

/**
 * 实体维度类型枚举
 * 用于区分用户行为权重的不同维度，比如标签、社团、作者。
 * 存储时使用 code 值，展示/调试时可用 desc。
 */
public enum EntityType {
    /**
     * 标签维度
     * 用于描述作品的分类/属性，比如：剧情、治愈、校园
     */
    TAG(1, "标签"),


    /**
     * 作者维度
     * 表示作品的创作者，比如：声优、绘师
     */
    AUTHOR(2, "作者"),

    /**
     * 社团维度
     * 表示作品的创作社团，比如：某个同人社团
     */
    CIRCLE(3, "社团");
    /** 数据库存储用的编号 */
    private final int code;

    /** 中文描述 */
    private final String desc;

    EntityType(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public int getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    /**
     * 根据 code 获取对应的枚举
     * @param code 数据库存储的编号
     * @return 对应的 EntityType
     */
    public static EntityType fromCode(int code) {
        for (EntityType type : EntityType.values()) {
            if (type.code == code) {
                return type;
            }
        }
        throw new IllegalArgumentException("未知的 EntityType code: " + code);
    }
}